using System;
using System.Collections.Generic;
using PluginFrame;

namespace PcrExperimentProject
{
	[Serializable]
	public abstract class ProjectItem : IProjectItem
	{
		protected string mName;

		protected IChannelConfiguration mChannelConfiguration;

		protected string mDye;

		protected IAnalysisParameterConfiguration mAnalysisParameterConfiguration;

		protected List<IAnalysisParameterConfiguration> mTubeAnalysisParameterConfiguration;

		protected List<IAnalysisParameterConfiguration> mTubeMeltingAnalysisParameterConfiguration;

		public List<IAnalysisParameterConfiguration> TubeMeltingAnalysisParameterConfiguration
		{
			get
			{
				if (mTubeMeltingAnalysisParameterConfiguration == null)
				{
					mTubeMeltingAnalysisParameterConfiguration = new List<IAnalysisParameterConfiguration>();
				}
				return mTubeMeltingAnalysisParameterConfiguration;
			}
			set
			{
				mTubeMeltingAnalysisParameterConfiguration = value;
			}
		}

		public List<IAnalysisParameterConfiguration> TubeAnalysisParameterConfiguration
		{
			get
			{
				if (mTubeAnalysisParameterConfiguration == null)
				{
					mTubeAnalysisParameterConfiguration = new List<IAnalysisParameterConfiguration>();
					if (mAnalysisParameterConfiguration != null)
					{
						string[] array = mName.Split(new string[1] { "," }, StringSplitOptions.None);
						for (int i = 0; i < array.Length; i++)
						{
							IAnalysisParameterConfiguration analysisParameterConfiguration = mAnalysisParameterConfiguration.Create();
							analysisParameterConfiguration.ProjectName = array[i];
							analysisParameterConfiguration.TargetIndex = i;
							mTubeAnalysisParameterConfiguration.Add(analysisParameterConfiguration);
						}
					}
				}
				return mTubeAnalysisParameterConfiguration;
			}
			set
			{
				mTubeAnalysisParameterConfiguration = value;
			}
		}

		public string Name
		{
			get
			{
				return mName;
			}
			set
			{
				mName = value;
			}
		}

		public IChannelConfiguration ChannelConfiguration
		{
			get
			{
				return mChannelConfiguration;
			}
			set
			{
				mChannelConfiguration = value;
			}
		}

		public string Dye
		{
			get
			{
				return mDye;
			}
			set
			{
				mDye = value;
			}
		}

		public IAnalysisParameterConfiguration AnalysisParameterConfiguration
		{
			get
			{
				return mAnalysisParameterConfiguration;
			}
			set
			{
				mAnalysisParameterConfiguration = value;
			}
		}
	}
}
